﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MJM.RPP.EntidadesNegocio;

namespace MJM.RPP.AccesoDatos
{
    public class OficioAD
    {
        public int Insertar(OficioEN objEN)
        {
            int _Codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_MAES_OFIPER_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmDescripcion, prmIdPersona, prmInstituto, prmAnio,prmCodigo;            
            try
            {
                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vOFIPER_chDESOFI";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = objEN.OFIPER_chDESOFI;
                cmd.Parameters.Add(prmDescripcion);

                prmInstituto = cmd.CreateParameter();
                prmInstituto.ParameterName = "@vOFIPER_chINSEST";
                prmInstituto.SqlDbType = SqlDbType.VarChar;
                prmInstituto.Value = objEN.OFIPER_chINSEST;
                cmd.Parameters.Add(prmInstituto);

                prmIdPersona = cmd.CreateParameter();
                prmIdPersona.ParameterName = "@vPAD_P_chIDPER";
                prmIdPersona.SqlDbType = SqlDbType.VarChar;
                prmIdPersona.Value = objEN.PAD_P_chIDPER;
                cmd.Parameters.Add(prmIdPersona);

                prmAnio = cmd.CreateParameter();
                prmAnio.ParameterName = "@vOFIPER_inANOTIT";
                prmAnio.SqlDbType = SqlDbType.Int;
                prmAnio.Value = objEN.OFIPER_inANOTIT;
                cmd.Parameters.Add(prmAnio);

                prmCodigo = cmd.CreateParameter();
                prmCodigo.Direction = ParameterDirection.ReturnValue;
                prmCodigo.SqlDbType = SqlDbType.Int;
                cmd.Parameters.Add(prmCodigo);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                _Codigo = Convert.ToInt32(prmCodigo.Value);

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return _Codigo;
        }

        public List<OficioEN> Listar(OficioEN objEN)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_OFIPER_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmDescripcion, prmIdPersona, prmInstituto;
            List<OficioEN> lst = new List<OficioEN>();
            SqlDataReader dr;
            try
            {
                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vOFIPER_chDESOFI";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = objEN.OFIPER_chDESOFI;
                cmd.Parameters.Add(prmDescripcion);

                prmInstituto = cmd.CreateParameter();
                prmInstituto.ParameterName = "@vOFIPER_chINSEST";
                prmInstituto.SqlDbType = SqlDbType.VarChar;
                prmInstituto.Value = objEN.OFIPER_chINSEST;
                cmd.Parameters.Add(prmInstituto);

                prmIdPersona = cmd.CreateParameter();
                prmIdPersona.ParameterName = "@vPAD_P_chIDPER";
                prmIdPersona.SqlDbType = SqlDbType.VarChar;
                prmIdPersona.Value = objEN.PAD_P_chIDPER;
                cmd.Parameters.Add(prmIdPersona);
                /*
                prmAnio = cmd.CreateParameter();
                prmAnio.ParameterName = "@vOFIPER_inANOTIT";
                prmAnio.SqlDbType = SqlDbType.Int;
                prmAnio.Value = objEN.OFIPER_inANOTIT;
                cmd.Parameters.Add(prmAnio);*/
                
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                OficioEN obj;
                while (dr.Read())
                {
                    obj = new OficioEN();                    
                    obj.NombrePersona = dr.GetString(0);
                    obj.OFIPER_chDESOFI = dr.GetString(2);
                    obj.OFIPER_P_inID = dr.GetInt32(1);
                    obj.OFIPER_chINSEST = dr.GetString(4);
                    obj.PAD_P_chIDPER = dr.GetString(3);
                    obj.OFIPER_inANOTIT = dr.GetInt32(5);
                    obj.AniosTotales = DateTime.Now.Year - dr.GetInt32(5);
                    lst.Add(obj);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Eliminar(int ID)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_OFIPER_Eliminar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmID;
            try
            {
                prmID = cmd.CreateParameter();
                prmID.ParameterName = "@vOFIPER_P_inID";
                prmID.SqlDbType = SqlDbType.Int;
                prmID.Value = ID;
                cmd.Parameters.Add(prmID);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return 0;
            }
            return 1;
        }
    }
}
